package com.eastfair.home.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.eastfair.boot.request.PageParams;
import com.eastfair.boot.service.SuperService;
import com.eastfair.home.dto.ReportSpaceAuditDTO;
import com.eastfair.home.entity.ReportSpaceAudit;
import com.eastfair.home.vo.ReportSpaceAuditVO;
import com.eastfair.venueservice.dto.ServiceItemDTO;

/**
 * <p>
 * 业务接口
 * 报馆审核记录
 * </p>
 *
 * @author dq
 * @date 2022 -08-08
 */
public interface ReportSpaceAuditService extends SuperService<ReportSpaceAudit> {

    /**
     * 分页查询报馆记录审核列表.
     *
     * @param pageParams the page params
     * @return the page
     */
    IPage<ReportSpaceAuditVO> listReportSpaceAuditVOs(PageParams<ReportSpaceAuditDTO> pageParams);

    /**
     * ID获取报馆信息.
     *
     * @param id the id
     * @return the report space audit vo by id
     */
    ReportSpaceAuditVO getVOById(Long id);

    /**
     * 报馆ID查询报馆审核记录.
     *
     * @param reportSpaceId the report space id
     * @return the report space audit by report space id
     */
    ReportSpaceAudit getByReportSpaceId(Long reportSpaceId);

    /**
     * 获取报馆记录.
     *
     * @param reportSpaceAuditDTO the report space audit dto
     * @return the report space audit
     */
    ReportSpaceAudit getReportSpaceAudit(ReportSpaceAuditDTO reportSpaceAuditDTO);

    /**
     * 保存报馆记录审核.
     *
     * @param reportSpaceAuditDTO the report space audit dto
     * @return the boolean
     */
    ReportSpaceAudit saveReportSpaceAudit(ReportSpaceAuditDTO reportSpaceAuditDTO);

    /**
     * 提交报馆审核.
     *
     * @param reportSpaceAuditDTO the report space id
     * @return the boolean
     */
    boolean submitReportSpaceAudit(ReportSpaceAuditDTO reportSpaceAuditDTO);

    /**
     * 更新报馆记录审核.
     *
     * @param reportSpaceAuditDTO the report space audit dto
     * @return the boolean
     */
    ReportSpaceAudit updateReportSpaceAuditSubmit(ReportSpaceAuditDTO reportSpaceAuditDTO);

    /**
     * 修改审核结果.
     *
     * @param reportSpaceAuditDTO the report space audit dto
     * @return the boolean
     */
    boolean updateReportSpaceStatus(ReportSpaceAuditDTO reportSpaceAuditDTO);

    /**
     * 更新图纸审核结果.
     *
     * @param reportSpaceAuditDTO the report space audit dto
     * @return the boolean
     */
    ReportSpaceAudit updateDrawingAuditStatus(ReportSpaceAuditDTO reportSpaceAuditDTO);

    /**
     * 更新服务审核结果.
     *
     * @param reportSpaceAuditDTO the report space audit dto
     * @return the boolean
     */
    ReportSpaceAudit updateServiceAuditStatus(ReportSpaceAuditDTO reportSpaceAuditDTO);

    /**
     * 更新图纸审核结果.
     *
     * @param reportSpaceAudit the report space audit
     * @return the boolean
     */
    boolean updateReportSpaceStatus(ReportSpaceAudit reportSpaceAudit);

    /**
     * 更新场馆审核状态.
     *
     * @param reportSpaceAuditDTO the report space audit dto
     * @return the boolean
     */
    boolean updateVenueAuditStatus(ReportSpaceAuditDTO reportSpaceAuditDTO);

    /**
     * 报馆ID更新场馆审核状态.
     *
     * @param reportSpaceId the report space id
     * @return the boolean
     */
    boolean updateVenueAuditStatusByReportSpaceId(Long reportSpaceId);

    /**
     * 保存保证金订单与管理费订单
     *
     * @param reportSpaceAuditId the report space audit id
     * @return the boolean
     */
    boolean saveMustPayOrder(Long reportSpaceAuditId);

    /**
     * 保存保证金订单与管理费订单
     *
     * @param reportSpaceAudit the report space audit
     * @return the boolean
     */
    boolean saveMustPayOrder(ReportSpaceAudit reportSpaceAudit);

    /**
     * 取消申请.
     *
     * @param reportSpaceId the report space id
     * @return the boolean
     */
    boolean cancelReportSpaceSubmit(Long reportSpaceId);

    /**
     * 报馆ID删除报馆审核.
     *
     * @param reportSpaceId the report space id
     * @return the boolean
     */
    boolean removeByReportSpaceId(Long reportSpaceId);

    /**
     * 发送配置收款商户的站内信.
     *
     * @param reportSpaceAuditDTO the report space audit dto
     * @param orderType           the order type
     * @return the boolean
     */
    boolean sendConfigPayeeInnerMsg(ReportSpaceAuditDTO reportSpaceAuditDTO, String orderType);

    /**
     * 校验是否可以编辑管理费服务或规格
     *
     * @param serviceItemDTO
     * @return
     */
    Boolean checkServiceCategory(ServiceItemDTO serviceItemDTO);

}
